De levensduur van variabelen

   

De tijd gedurende welke een variabele haar waarde behoudt, staat bekend als de levensduur. Tijdens deze levensduur kan de waarde van een variabele wel veranderen, maar een zekere waarde blijft behouden. Als een variabele haar bereik verliest, verliest ze ook haar waarde.

Bij het starten van een procedure worden alle variabelen ge∩nitialiseerd. Een numerieke variabele wordt tot nul ge∩nitialiseerd, een tekenreeks met variabele lengte wordt tot een tekenreeks zonder gegevens ("") ge∩nitialiseerd en een tekenreeks met vaste lengte wordt gevuld met het teken dat wordt voorgesteld door de ASCII-code 0 of Chr(0). Variabelen van het type Variant worden ge∩nitialiseerd op Empty. Elk onderdeel van een variabele van een door de gebruiker gedefinieerd type wordt ge∩nitialiseerd alsof het een afzonderlijke variabele betreft.

Als u een objectvariabele declareert, wordt in het geheugen ruimte gereserveerd. De waarde hiervan wordt echter op Nothing ingesteld totdat u met behulp van de instructie Set een objectverwijzing aan de variabele toewijst.

Als de waarde van een variabele tijdens het uitvoeren van de programmacode niet is veranderd, blijft de ge∩nitialiseerde waarde behouden totdat de variabele haar bereik verliest.

Een variabele op procedureniveau die met de instructie Dim is gedeclareerd, houdt altijd een waarde totdat de procedure volledig is uitgevoerd. Als de procedure andere procedures oproept, blijft de waarde van de variabele ook tijdens het uitvoeren van die procedures behouden.

Als een variabele op procedureniveau is gedeclareerd met het sleutelwoord Static, behoudt de variabele zijn waarde zolang de code in een willekeurige module wordt uitgevoerd. Wanneer alle code is uitgevoerd, verliest de variabele zijn bereik en zijn waarde. De levensduur is gelijk aan de levensduur van een variabele op moduleniveau.

Een variabele op moduleniveau is geen statische variabele. In een standaardmodule of klassenmodule wordt de waarde behouden totdat u stopt met het uitvoeren van uw programmacode. In een klassenmodule wordt de waarde behouden zolang er een versie van de klasse bestaat. Variabelen op moduleniveau blijven geheugenruimte in beslag nemen totdat u de waarden opnieuw hebt ingesteld.

Gebruik deze variabelen dus alleen als het noodzakelijk is. Als u v≤≤r een instructie Function of Sub het sleutelwoord Static plaatst, blijven tussen de oproepen door de waarden van alle variabelen op procedureniveau behouden.